/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.manager;


import com.brain.core.common.UtilCore;
import com.brain.core.dto.EmpresaDto;
import com.brain.core.dto.EmpresaOpcionSistemaDto;
import com.brain.core.exception.DAOException;
import com.brain.core.hibernate.dao.DAOGenerico;
import com.brain.segu.dto.OpcionSistemaDto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

/**
 *
 * @author Indra
 */
@Service
public class EmpresaOpcionSistemaManager extends ComunManager<EmpresaOpcionSistemaDto>  implements Serializable {
    
    private static Logger logger = Logger.getLogger(OrganizacionManager.class);
    private Long idEntidad = 126L;
    @Resource
    private DAOGenerico<EmpresaOpcionSistemaDto> springHibernateDao;
    @Resource
    private RecursosManager recursosManager;
    /**
     * Retorna todos los permisos
     * @return Lista de Permisos
     * @throws DAOException 
     */
    public List<EmpresaOpcionSistemaDto> obtenerTodos() throws DAOException {        
        return springHibernateDao.listarTodosDtos(EmpresaOpcionSistemaDto.class);
    }
    
    public List<EmpresaOpcionSistemaDto> obtenerTodosPorEmpresa(EmpresaDto empresaDto) throws DAOException{
            List<Object> listaParametros = new ArrayList<Object>();
            String hqsql = "select o from EmpresaOpcionSistemaDto as o where ";
            hqsql += " o.empresaDto.id = ? ";
            listaParametros.add(empresaDto.getId());
            
            return springHibernateDao.ejecutarQuery(hqsql, listaParametros);
    }    
        
  
    /**
     * Retorna un permiso por su Id
     * @param id Id Permiso
     * @return Permiso
     * @throws DAOException 
     */
    public EmpresaOpcionSistemaDto obtenerPorId(Long id) throws DAOException {
       return springHibernateDao.obtenerDtoPorId(EmpresaOpcionSistemaDto.class, id);
    }   

    public void agregarEliminarOpcionSistemaEmpresa(OpcionSistemaDto opcSisDto, EmpresaDto EmpDto) throws DAOException{
        String mensajeTrx = "";
        if(!opcSisDto.getId().equals(0L)){
                int verificarExistencia=0;
                List<EmpresaOpcionSistemaDto> listaEmpopcSist = new ArrayList<EmpresaOpcionSistemaDto>();
                listaEmpopcSist = this.obtenerTodosPorEmpresaOpcionSiste(opcSisDto,EmpDto);
                verificarExistencia = listaEmpopcSist.size();

                if(verificarExistencia==0){

                    EmpresaOpcionSistemaDto empOpcSistDto = new EmpresaOpcionSistemaDto();
                    empOpcSistDto.setEmpresaDto(EmpDto);
                    empOpcSistDto.setOpcionSistemaDto(opcSisDto);
                    this.nuevo(empOpcSistDto);
                }else{

                    EmpresaOpcionSistemaDto EmpopcSisDtoelim= new EmpresaOpcionSistemaDto();
                    EmpopcSisDtoelim=listaEmpopcSist.get(0);
                    this.eliminar(EmpopcSisDtoelim);
                }
           }else{
            mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.empresa.opcion.sistema.tipo.pais.error");
            recursosManager.showMessage(mensajeTrx);
           } 
    
    }
    
    public List<EmpresaOpcionSistemaDto> obtenerTodosPorEmpresaOpcionSiste(OpcionSistemaDto opcionSistDto, EmpresaDto empresaDto) throws DAOException{
            List<Object> listaParametros = new ArrayList<Object>();
            String hqsql = "select o from EmpresaOpcionSistemaDto as o where ";
            hqsql += " o.empresaDto.id = ? ";
            listaParametros.add(empresaDto.getId());
            hqsql += " and (o.opcionSistemaDto.id = ? )";
            listaParametros.add(opcionSistDto.getId());
            
            return springHibernateDao.ejecutarQuery(hqsql, listaParametros);
    }  
    
    
}
